Курс по микрофреймворку Slim PHP 2017 Практически любой веб-разработчик, даже начинающий, скорее всего, слышал или знаком с понятием фреймворк. Напомню, что фреймворк – это набор библиотек (функций и методов), или если сказать несколько иначе это каркас, будущего приложения, то есть веб-проекта, сайта или скрипта. При этом, фреймворк предлагает определенные методы, которые избавляют программиста от стандартной рутинной работы, к примеру создание точки входа на сайт, создание ЧПУ, организация работы с базой данных и т.д. Таким образом, фреймворк позволяет создавать приложения быстрее, эффективнее и безопаснее. И, как правило, все фреймворки обладают огромнейшим функционалом и возможностями. Но очень часто при разработке небольших проектов, весь функционал фреймворка попросту не нужен, вполне достаточно только неких базовых возможностей. В этом случае на помощь приходят микрофреймворки. Микрофреймворк – это тот же каркас будущего веб-приложения, но значительно упрощенный. То есть простой и быстрый в работе. Который, состоит только из определенного программного ядра будущего сайта, скрипта или веб-проекта. Главная задача микрофреймворков – это простое расширяемое ядро. В них нет абстрактного уровня базы данных, нет валидации форм или всего того, что уже реализовано в различных сторонних библиотеках, к которым можно обращаться. Микрофреймворк всегда можно расширить самостоятельно и добавить необходимую функциональность. При этом, так как микрофреймворк предлагает только базовый функционал – он очень прост в работе и изучении. Поэтому в данном курсе мы с Вами научимся работать с одним из наиболее популярных микрофреймвоков – Slim. Курс будет разбит на два раздела. Первый – это теоретический, в котором, мы изучим основы работы с данным фреймворком, познакомимся с маршрутизаторами и узнаем, как формировать страницы и отображать данные на экране. Второй – это практический раздел, в котором мы создадим несложную систему управления контентом, используя инструменты данного фреймворка, и соответственно закрепим полученные знания. Урок 1. Введение в фреймворк PHP Slim. Установка: От автора: с данного урока мы начинаем цикл уроков, посвященный изучению микрофреймворка PHP Slim. Микрофреймворк – это набор библиотек (функций и методов), или если сказать иначе — каркас будущего веб-приложения, но значительно упрощенный, нежели полноценный фреймворк. То есть микрофремворк, состоит только из определенного программного ядра будущего сайта, скрипта или веб-проекта. Главная цель микрофреймворка – это простое расширяемое ядро. Обычно микрофреймворки лишены валидации форм, абстрактного уровня базы данных, либо того, что уже реализовано в различных сторонних библиотеках, к которым можно обращаться. Микрофреймворк всегда можно расширить самостоятельно и добавить необходимую функциональность. При этом, так как микрофреймворк предлагает только базовый функционал – он очень прост в работе и изучении. По итогам данного урока Вы узнаете, что такое микрофремворки и в чем их основное отличие по сравнению с полноценными фреймворками. Научитесь устанавливать Slim двумя разными способами, и увидите на примере, по какому принципу построена его работа. Урок 2. Настройки и режимы работы фреймворка PHP Slim: От автора: на прошлом уроке мы познакомились с микроофреймворком Slim, научились выполнять его установку, поговорили о принципе его работы и настроили перенаправление адресов, для формирования красивых ЧПУ. В данном видео, мы поговорим о настройках как стандартных, так и собственных — пользовательских, а также изучим режимы работы данного микрофреймворка. По итогам данного урока Вы научитесь настраивать микрофремворк Slim, используя как стандартные настройки, так и пользовательские, а также узнаете, что такое режимы работы и как использовать различные наборы настроек в определенных режимах работы. Урок 3. Роутеры: От автора: в данном уроке мы поговорим о методах регистрации маршрутизаторов или роутеров для различных типов HTTP запросов. При этом определимся с такими понятиями как роутер, протокол HTTP, типы запросов, а также URI, URL и URN. По итогам данного урока Вы узнаете, что такое роутер и процесс маршрутизации. Научитесь использовать методы микрофреймворка Slim, для создания и регистрации роутеров под различные типы HTTP запросов, а также увидите, как передавать переменные в ранее созданные роутеры. Урок 4. Условия. Middleware: От автора: на прошлом уроке мы определились с понятием роутер и научились их создавать, используя различные методы фреймворка, а также Вы узнали, как передавать различные параметры в функцию обработчик роутера. При этом, если параметры передаются из вне от обычных пользователей, значит необходимо их определенным образом проверять, дабы они соответствовали необходимому формату, поэтому данном уроке мы поговорим о том, как определить условия, которым обязательно должны удовлетворять передаваемые параметры роутеров, как присвоить имена для создаваемых роутеров, а также определимся с понятием middleweare в микрофреймворке Slim. По итогам данного урока Вы научитесь формировать условия, которым обязательно должны удовлетворять передаваемые параметры роутеров, обеспечив, тем самым правильный формат значений параметров. Так же узнаете, как назначать имена для создаваемых роутеров и научитесь описывать функции, код которых будет выполняться перед обработчиком роутером. Урок 5. Группировка роутеров. Helpers: От автора: в данном видео мы поговорим о группировке роутеров, что позволит избежать повторений при создании шаблона адресной строки будущего роутера, также изучим методы группы helpers и рассмотрим ручное формирование кода статуса http протокола, который отправляется вместе с необходимыми заголовками при ответе от сервера. По итогам данного урока Вы научитесь формировать группы роутеров, увидите, в чем особенность методов из группы helpers и узнаете как самостоятельно сформировать код статуса протокола http, который, будет возвращен в качестве ответа от сервера. Урок 6. Шаблонизатор Slim. Отображение данных на экран: От автора: изучив на прошлых уроках теоретические основы по работе с микрофреймворком Slim, скорее всего у Вас возник или возникал вопрос, о том, как правильно в приложении Slim отображать данные на экране пользователя? Ведь создав роутер и описав функцию обработчик, не совсем удобно в ее коде, выводить на экран некий набор данных, особенно если формируется достаточно объемная веб-страница. Поэтому в данном уроке мы с Вами рассмотрим встроенный механизм отображения данных в микрофреймворке Slim. По итогам данного урока Вы научитесь создавать шаблоны для отображения данных на экран. При этом узнаете, как использовать встроенный шаблонизатор Slim, и как передать определенный набор данных в шаблон будущей страницы. Так же научитесь создавать собственные виды, и тем самым вносить изменения в стандартный механизм отображения данных на экран. А так же увидите, как выполнить интеграцию, шаблонизатора Twig в функционал микрофреймворка Slim. Урок 7. Файловая структура CMS: От автора: изучив основные теоретические моменты в предыдущих уроках курса по микрофреймворку PHP Slim, мы приступаем к практике, и для закрепления пройденного материала, реализуем несложную систему управления контентом, используя инструменты микрофреймворка Slim. В данном уроке мы создадим файловую структуру будущего скрипта и определимся с логической схемой, создаваемой CMS. По итогам данного урока Вы, узнаете из каких основных элементов будет состоять будущий сайт, создав файловую структуру будущего скрипта. А так же, узнаете какой шаблон проектирования будет использоваться для создания будущей CMS. Урок 8. Главный контроллер CMS: От автора: приветствую Вас в курсе по микрофреймворку PHP Slim. Продолжаем реализацию несложной системы управления контентом, используя инструменты данного фреймворка. В этом уроке, мы начнем описывать код главного контроллера будущей CMS, в котором будет описана основная логика, общая как для пользовательской части сайта, которая открыта для всеобщего посещения, так и панели администратора, доступ к которой открыт только определенным пользователям. При этом мы реализуем механизм создания объекта дочернего контроллера, используя главный контролер. По итогам данного урока Вы узнаете, какие методы необходимо описать в главном контроллере будущей системы управления контентом, как и по какому шаблону создать метод создания объектов дочерних контроллеров, а также как создать собственную функцию автоматической загрузки классов. Урок 9. Доработка главного контроллера: От автора: приветствую Вас в курсе по микрофреймворку PHP Slim. На прошлом уроке мы начали создавать код основного класса будущей CMS, реализовали функцию автоматической загрузки классов и создали первый дочерний контроллер, который в будущем сформирует главную страницу сайта. В данном уроке мы закончим код основного логического ядра, создадим дополнительный класс, который сформирует общие элементы для каждой страницы пользовательской части, а также создадим класс модели и драйвера по работе с базой данных. По итогам данного урока мы закончим класс основного логического ядра будущей CMS, реализуем дополнительный контроллер, задача которого – формирование готового HTML кода общих элементов пользовательской части сайта. При этом Вы научитесь работать с переменными окружения микрофремворка Silm. Урок 10. Главное меню сайта: От автора: приветствую Вас в курсе по микрофреймворку PHP Slim. Продолжаем реализацию несложной системы управления контентом, используя инструменты данного фреймворка. В данном уроке, используя дополнительный контроллер, который был создан на прошлом уроке, мы реализуем готовый HTML код главного меню сайта. При этом опишем один из методов будущей модели, а так же в драйвере по работе с базой данных реализуем метод по выборке данных. По итогам данного урока Вы узнаете как, используя инструменты микрофреймворка Slim реализовать вложенные шаблоны и соответственно, как собрать все части одного шаблона в одно единое целое. А так же создадите первый метод в модели по выборке данных, используя промежуточный класс – драйвер по работе с базой данных. Урок 11. Формирование общего шаблона пользовательской части: От автора: приветствую Вас в курсе по микрофреймворку PHP Slim. Продолжаем реализацию несложной системы управления контентом, используя инструменты данного фреймворка. В этом уроке, мы отобразим на экране главную страницу будущего сайта, за исключением центрального блока, код которого будет сформирован на следующем уроке. При этом мы поговорим от том, как собрать в одно единое целое, отдельные части шаблона, как сформировать заголовок и мета-данные каждой страницы сайта, а также как сформировать правильный путь для подключаемых файлов и отображаемых изображений. По итогам данного урока Вы сформируете практически готовую главную страницу пользовательской части будущей CMS и соответственно выведете ее на экран. При этом Вы научитесь создавать сложные шаблоны состоящие из нескольких отдельных частей а так же формировать правильный путь для подключаемых файлов. Урок 12. Список материалов главной страницы: От автора: приветствую Вас в курсе по микрофреймворку PHP Slim. Продолжаем реализацию несложной системы управления контентом, используя инструменты данного фреймворка. В данном уроке мы завершим функционал главной страницы будущей CMS, а именно отобразим в центральной области пользовательской части список материалов сохраненных в базе данных. При этом количество отображаемых материалов может быть велико, а значит выводить материалы необходимо “порционно”, используя постраничную навигацию, что собственно мы и сделаем в данном уроке. По итогам данного урока мы полностью завершим функционал главной страницы пользовательской части будущей CMS. При этом Вы узнаете, как создать отдельный самостоятельный класс, реализующий постраничную навигацию, как получать и обрабатывать параметры, передаваемые в созданные роутеры, а так же наглядно увидите как контроллеры скрипта, формируют данные определенной страницы. Урок 13. Авторизация пользователей: От автора система управления контентом – это веб-приложение, которое предусматривает наличие как пользовательской части, открытой для всеобщего посещения, так и закрытого раздела, доступ к которому разрешен, только авторизированным пользователям с соответствующими правами. А значит необходимо создать механизм авторизации пользователей, чем мы с Вами и займемся в данном уроке. По итогам данного урока мы создадим страницу и механизм авторизации пользователей, сформируем маршрутизатор для двух различных типов запросов, научимся отображать на экране системные сообщения и формировать перенаправление на интересующие страницы. А также доработаем драйвер базы данных, а именно создадим механизм очистки данных, для более безопасной работы будущей CMS. Урок 14. Закрытый раздел CMS: От автора: на прошлом уроке мы реализовали механизм авторизации пользователей, а значит, с данного урока мы приступаем к созданию закрытого раздела будущей системы управления контентом. При этом мы познакомимся с классами посредниками, которые вступают в работу еще до обработки маршрутизаторов и являются наилучшим решением для реализации механизма проверки авторизации и ограничения доступа к определенным страницам. По итогам данного урока Вы узнаете, что такое классы посредники, как они создаются, и какие методы они предоставляют для работы с микрофреймворком Slim. Так же Вы познакомитесь с событиями и научитесь создавать функции, которые будут вызываться при срабатывании данных событий. И наконец, научитесь закрывать доступ к определенным страницам сайта и проверять данные авторизации пользователей. Урок 15. Права групп пользователей: От автора: в любой хорошей системе управления контентом должен быть предусмотрен механизм по разграничению пользователей по правам, наша создаваемая CMS не исключение, хоть она и не сложная, а значит в данном уроке мы создадим специальный класс, а вместе с ним и целый механизм по проверке прав, групп пользователей. А также переработаем роутер для закрытого раздела CMS, то есть создадим группу роутеров и соответственно немного изменим обращение к классу посреднику. По итогам данного урока Вы узнаете, как создать самостоятельный класс, функционал которого обеспечит разделение пользователей по правам групп, как маршрутизаторы объединить в группу по общему признаку и как вызвать на исполнение класс посредник только для определенной группы роутеров. Урок 16. Главная страница админки. Страница добавления нового материала: От автора: на прошлых уроках мы с Вами реализовали заготовку будущей панели администратора, доступ к которой разрешен только авторизированным пользователям, у которых есть соответствующие права. Сегодня мы продолжаем дорабатывать данный раздел, нам предстоит реализовать главную страницу панели администратора, а так же мы приступим к реализации механизма сохранения и редактирования материалов CMS. По итогам данного урока мы с Вами реализуем главную страницу панели администратора, на которой отобразим ранее добавленные материалы, а также создадим страницу по добавлению и редактированию материалов. Урок 17. Добавление нового материала: От автора: панель администратора важнейший элемент каждой системы управления контентом, так как позволяет редактировать содержимое, отображаемое в пользовательской части сайта. На прошлом уроке мы создали главную страницу закрытого раздела и отобразили на экране форму добавления нового материала. В данном уроке мы реализуем механизм сохранения материалов в соответствующую таблицу базы данных. По итогам данного урока мы с Вами создадим механизм добавления нового материала. При этом Вы узнаете, как реализовать автоматическую генерацию псевдонимов, как сохранить и изменить размер изображений, а так же как реализовать сохранение новых элементов в базу данных. Урок 18. Финальная доработка CMS: От автора: в заключительном уроке мини курса по изучению микрофреймворка Slim мы с Вами реализуем механизм редактирования и удаления материалов сайта, а так же доработаем некоторые моменты, упущенные во время разработки. Конечно, весь функционал панели администратора мы с Вами реализовать не успеем (я имею ввиду создание и редактирование страниц, и новостей), да и это ни к чему, так как оставшиеся элементы Вы вполне сможете реализовать самостоятельно, по аналогии рассмотренным ранее материалом. По итогам данного урока мы с Вами окончательно доработаем функционал разрабатываемой системы управления контентом. При этом Вы узнаете, как реализовать редактирование и удаление материалов, а также как определить активный пункт меню.